From 2bca9275d1ce603360474b81dc31cc3e2f92e0a6 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Tue, 11 Nov 2008 11:10:59 +0000 Subject: [PATCH] vmx: Fix realmode exception delivery to correctly check stack pointer size. Bug tracked down by Tim Deegan Signed-off-by: Keir Fraser --- xen/arch/x86/hvm/vmx/realmode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vmx/realmode.c b/xen/arch/x86/hvm/vmx/realmode.c index 9bd1f25162..b067eb1615 100644 --- a/xen/arch/x86/hvm/vmx/realmode.c +++ b/xen/arch/x86/hvm/vmx/realmode.c @@ -69,7 +69,8 @@ static void realmode_deliver_exception( frame[1] = csr->sel; frame[2] = regs->eflags & ~X86_EFLAGS_RF; - if ( hvmemul_ctxt->ctxt.sp_size == 32 ) + /* We can't test hvmemul_ctxt->ctxt.sp_size: it may not be initialised. */ + if ( hvmemul_ctxt->seg_reg[x86_seg_ss].attr.fields.db ) { regs->esp -= 6; pstk = regs->esp; -- 2.30.2